// pages/getDizhi/getDizhi.js
import api from '../../utils/api.js'
var app = getApp();
var QQMapWX = require("../../utils/qqmap-wx-jssdk.js");
var qqmapsdk;
var qqmapsdk = new QQMapWX({
    key: "OI5BZ-G3FWJ-A6VFG-FGA5U-AZHAT-2NBVY" // 必填
});
import utils from "../../utils/util"
import { HTTP } from '../../utils/http.js'
import { config } from '../../utils/config'
let http = new HTTP()
Page({
    /**
     * 页面的初始数据
     */
    data: {
        // 此页面 页面内容距最顶部的距离
        height: app.globalData.height * 2 + 20,
        allDizhi: [],
        current: "",
        status: true,
        address: "",
        show: true,
        show1: true,
        order: -1,
        status: 0,
        selectList: [],
        current: 0,
        suggestion: [],
        imgUrl: config.imgUrl,
    },

    //接口
    //获取所有地址
    all_address(obj) {
        http.request({
            url: api.allAddress,
            data: obj,
            success: res => {
                console.log(res)
                if (res.code == 200) {
                    this.setData({
                        allDizhi: res.data,
                    })
                } else {
                    this.setData({
                        allDizhi: [],
                    })
                }
            }
        })
    },
    //城市选择
    select_city(obj) {
        console.log('===================', obj)
        http.request({
            url: api.selectCity,
            // data:obj,
            success: res => {
                console.log('城市选择', res)
                this.setData({
                    selectList: res.data
                })
            }
        })
    },
    //新版拿到用户的城市ID
    // getAddUserCityId(obj) {
    //     console.log('=====新版拿到城市id=======', obj)
    //     return new Promise((resolve, reject) => {
    //         http.request({
    //             url: api.getAddUserCityId,
    //             data: obj,
    //             success: res => {
    //                 // console.log(res)
    //                 resolve(res.data)
    //             }
    //         })
    //     })
    // },
    toIndex() {
        wx.switchTab({
            url: '/pages/index/index',
        })
    },
    addDizhi() {
        wx.navigateTo({
            url: "/pages/addDizhi/addDizhi",
        })
    },
    open() {
        if (this.data.status == 0) {
            this.setData({
                status: 1,
                show: true,
                show1: true
            })
        } else {
            this.setData({
                status: 0,
            })
        }

    },
    select(e) {
        console.log(e)
            // ====================新增存储
        wx.setStorage({
            key: 'city_id',
            data: e.target.dataset.id,
        })
        this.setData({
            status: 0,
            current: e.target.dataset.current
        })
        this.getHistory();
    },
    //切换地址
    change(e) {
        let pages = getCurrentPages(); //获取当前页面js里面的pages里的所有信息。
        let prevPage = pages[pages.length - 2];
        if (this.data.order == 0) { // 从首页进来
            app.updataCar() // 清空菜篮和已选菜单数据
            var dizhi = this.data.allDizhi.filter((item) => {
                return item.id == e.target.dataset.id
            })[0]
            console.log(dizhi)
            var address = {
                city_id: dizhi.city_id,
                id: dizhi.id,
                address: dizhi.address,
                detail: dizhi.detail,
                latitude: dizhi.lat,
                province: dizhi.province,
                city: dizhi.city,
                district: dizhi.district,
                longitude: dizhi.lon,
                name: dizhi.name,
                phone: dizhi.mobile
            }
            prevPage.setData({ // 将我们想要传递的参数在这里直接setData。上个页面就会执行这里的操作。
                have: 1,
                show2: false
            })
            wx.setStorageSync("address", address)
            app.globalData.pass = true
                // wx.showToast({
                //   title: '更换成功',
                // })
            setTimeout(() => {
                wx.redirectTo({
                    url: '/pages/index/index',
                })
            }, 1000)
        }
    },

    //点击输入框获取焦点事件
    // click() {
    //     var history = wx.getStorageSync("address-history") || []
    //     var history = history.reverse()
    //     if (history.length > 0) {
    //         history.length = 3
    //     }
    //     this.setData({
    //         show1: false,
    //         history
    //     })
    // },
    choose(e) { // 选择历史搜索
        var address = this.data.history[e.target.dataset.idx]
        let pages = getCurrentPages(); //获取当前页面js里面的pages里的所有信息。
        let prevPage = pages[pages.length - 2];
        if (this.data.order == 0) {
            app.updataCar() // 清空菜篮和已选菜单数据
            wx.setStorageSync("address", address);
            prevPage.setData({ // 将我们想要传递的参数在这里直接setData。上个页面就会执行这里的操作。
                have: 1,
                show2: false,
            })
            setTimeout(() => {
                wx.navigateBack({})
            }, 1000)
        } else {
            //prevPage 是获取上一个页面的js里面的pages的所有信息。 -2 是上一个页面，-3是上上个页面以此类推。
            prevPage.setData({ // 将我们想要传递的参数在这里直接setData。上个页面就会执行这里的操作。
                address,
                city_id: address.city_id
            })
            wx.navigateBack({})
        }
    },
    //数据回填方法
    backfill: function(e) {
        var id = e.currentTarget.id;
        for (var i = 0; i < this.data.suggestion.length; i++) {
            if (i == id) {
                // console.log('dizhi',dizhi)
                var city_id = this.data.selectList[this.data.current].id
                var address = this.data.suggestion[i]
                var history = wx.getStorageSync("address-history") || []
                history.reverse()
                if (history.length >= 3) {
                    history.length = 2
                }
                var flag = true
                history.map(item => {
                    console.log(item)
                    if (item.address == address.address) {
                        flag = false
                        return
                    }
                })
                console.log('flag', flag);

                if (flag) {
                    address.cityId = this.data.current
                    history.push(address)
                    wx.setStorageSync("address-history", history)
                }

                var city = wx.setStorageSync("city") || ""

                if (!city) {
                    city = wx.setStorageSync("address");

                    console.log(city);
                    // this.getAddUserCityId({ id: wx.getStorageSync("user_id"), name: city }).then(res => {
                    //     console.log('==========城市=======', res)
                    //     wx.setStorageSync("city", { id: res.city_id, name: city })
                    // })
                }
                let pages = getCurrentPages(); //获取当前页面js里面的pages里的所有信息。
                let prevPage = pages[pages.length - 2];
                console.log(prevPage)
                if (this.data.order == 1) {
                    //prevPage 是获取上一个页面的js里面的pages的所有信息。 -2 是上一个页面，-3是上上个页面以此类推。
                    prevPage.setData({ // 将我们想要传递的参数在这里直接setData。上个页面就会执行这里的操作。
                        address,
                        city_id: this.data.selectList[this.data.current].id,
                        show2: false,
                    })
                    wx.navigateBack({})
                } else {
                    app.updataCar() // 清空菜篮和已选菜单数据
                    wx.setStorageSync("address", address);
                    prevPage.setData({ // 将我们想要传递的参数在这里直接setData。上个页面就会执行这里的操作。
                        have: 1,
                        show2: false
                    })
                    setTimeout(() => {
                        wx.navigateBack({})
                    }, 1000)
                }
            }
        }
    },


    // 请求地图接口返回小区列表
    getsuggest: utils.debounce(function(e) {
        var _this = this;
        //调用关键词提示接口
        // console.log(e, e[0].detail.value);
        var inputValue = e[0].detail.value
        if (inputValue) {
            qqmapsdk.getSuggestion({
                //获取输入框值并设置keyword参数
                keyword: inputValue, //用户输入的关键词，可设置固定值,如keyword:'KFC'
                region: _this.data.selectList[_this.data.current].city_name, //设置城市名，限制关键词所示的地域范围，非必填参数
                region_fix: 1,
                success: function(res) { //搜索成功后的回调
                    var sug = [];
                    for (var i = 0; i < res.data.length; i++) {
                        sug.push({ // 获取返回结果，放到sug数组中
                            address: res.data[i].title,
                            id: res.data[i].id,
                            addr: res.data[i].address,
                            city: res.data[i].city,
                            district: res.data[i].district,
                            province: res.data[i].province,
                            latitude: res.data[i].location.lat,
                            longitude: res.data[i].location.lng
                        });
                    }
                    _this.setData({ //设置suggestion属性，将关键词搜索结果以列表形式展示
                        suggestion: sug,
                        show: false
                    });
                }
            });
        } else {
            _this.setData({ //设置suggestion属性，将关键词搜索结果以列表形式展示
                suggestion: [],
                show: true
            });
        }
    }, 300),


    /**
     * 生命周期函数--监听页面加载
     */
    onLoad: function(options) {
        if (options.back) {
            this.setData({
                back: options.back
            })
        }
        this.setData({
            order: options.order
        })
        this.select_city()
            // this.getAddUserCityId()
        this.getHistory() //获取历史记录

    },

    getHistory() {
        // 查询历史消息
        var history = wx.getStorageSync("address-history") || []
            // 选择当前城市的缓存
        var currentCityId = this.data.current;
        var history = history.reverse();
        let cityHistory = history.filter(item => {
            return item.cityId == currentCityId
        })
        if (cityHistory.length > 0) {
            cityHistory.length = 3
        }
        this.setData({
            show1: false,
            history: cityHistory
        })
    },
    /**
     * 生命周期函数--监听页面初次渲染完成
     */
    onReady: function() {

    },

    /**
     * 生命周期函数--监听页面显示
     */
    onShow: function() {
        //获取所有地址
        // this.all_address({ user_id: wx.getStorageSync("user_id") })
        // this.all_address({ user_id: 111 })
        //获取当前位置
        var address = wx.getStorageSync("address") || [];
        if (address.length == 0) {
            var that = this;
            let qqmapsdk = new QQMapWX({
                key: "OI5BZ-G3FWJ-A6VFG-FGA5U-AZHAT-2NBVY"
            });
            wx.getLocation({
                type: "wgs84",
                success(res) {
                    const latitude = res.latitude;
                    const longitude = res.longitude;
                    const speed = res.speed;
                    const accuracy = res.accuracy;
                    qqmapsdk.reverseGeocoder({
                        location: { latitude, longitude },
                        success(res) {
                            that.setData({
                                address: res.result.address
                            });
                        }
                    });
                }
            });
        } else {
            this.setData({
                address: address.address
            })
        }
    },

    /**
     * 生命周期函数--监听页面隐藏
     */
    onHide: function() {

    },

    /**
     * 生命周期函数--监听页面卸载
     */
    onUnload: function() {
        if (this.data.back && this.data.back == 'backHome') {
            wx.navigateBack({})
        }
        let pages = getCurrentPages();// 当前页的数据，
        let prevPage = pages[pages.length - 2];// 上一页的数据，
        prevPage.setData({//对A页面data中的参数进行赋值（记住A页面赋值是在B页面完成的）
            noRefresh: false,
        })

    },

    /**
     * 页面相关事件处理函数--监听用户下拉动作
     */
    onPullDownRefresh: function() {

    },

    /**
     * 页面上拉触底事件的处理函数
     */
    onReachBottom: function() {

    }
})